# 图像处理工具函数
import os
import numpy as np
import cv2
from PIL import Image

def open_image(file_path):
    """
    打开图像文件，支持各种格式
    
    参数:
        file_path: 图像文件路径
        
    返回:
        图像数据，BGR格式
    """
    # 检查文件是否存在
    if not os.path.exists(file_path):
        raise FileNotFoundError(f"文件不存在: {file_path}")
    
    # 尝试使用OpenCV打开图像
    img = cv2.imread(file_path)
    
    # 如果OpenCV无法打开，尝试使用PIL
    if img is None:
        try:
            pil_img = Image.open(file_path)
            img = np.array(pil_img)
            # 如果图像是RGB格式，转换为BGR
            if len(img.shape) == 3 and img.shape[2] == 3:
                img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
        except Exception as e:
            raise IOError(f"无法打开图像文件: {file_path}, 错误: {str(e)}")
    
    return img